Custom Split Normals – First Testbuild Available

So, to change a bit from FBX, something funny this time! 😛

Here are three links on Graphicall.org for testbuilds of current Custom Split Normals state of work:

Please report any bug you may (will!) find to our bug tracker, https://developer.blender.org.

EDIT: You can now found this project’s code in a WIP branch on our git repository: temp_custom_loop_normals (note the edits to FBX addons to enable custom normals import are not available this way).

Currently (but those features should not evolve much in near future), you can:

Import custom normals from FBX

Supports both vertex and ‘face corner’ normals. Note other addons can do it as well, but that’d be done once the work is merged in Blender’s master!

Write/read custom split normals into/from .blend files

Those custom  split normals are stored like e.g. vertex colors or any other custom data layer, which means that you can also edit your mesh (deforming should still give reasonably good custom normals, modifying the topology however (adding/removing faces, sharp edges, etc.) can quickly lead to nasty custom normals!).

Please note there is no guarantee about the final format of those data though, in other words, files created with those testbuilds might very well not be usable by later ones or final version (though this is rather unlikely, imho)!

View custom split normals in 3DView or renders, and re-export them

Custom split normals are fully integrated into the process to generate final split normals, so when you use the laters (exactly as in current official 2.71 release or master), you’ll get your custom normals instead of auto-generated ones, if available.

Note that when there are some custom split normals data, the ‘angle’ threshold of AutoSmooth is unused (as if it was at 180°), so you only can use sharp edges to define ‘smooth fans’ (i.e. a set of adjacent face corners sharing a same vertex, and a same split normal).

Add or Edit custom split normals with the SetSplitNormals modifier

It has two modes:

  • Ellipsoid assigns to each vertex the normal it would have at the surface of an ellipsoid (proportions of that ellipsoid are defined from bounding box of the modified object, and you can use another object to define the position of its center). Allows e.g. to realize a simple ‘tree shading’ effect (see http://wiki.polycount.com/VertexNormal ).
  • Object uses another object’s geometry to assign to each vertex the normal that target’s closest face. Allows e.g. to make the ‘fake smooth round corners’ effect – you take a cube, bevel its edges, and add a SetSplitNormals modifier to it using another cube as target.

11 thoughts on “Custom Split Normals – First Testbuild Available

  1. Pingback: Blender Developers Meeting Note : 3 Aout 2014 | Blenderlounge

  2. Pingback: Developer Meeting Notes: August 3, 2014 | BlenderNation

  3. I do work in a game that requires that a a mesh be split at the UV islands. As you know, Blender recalculates the normals and leaves seams at all the splits. Does this feature(currently in Blender, or in development) provide a way to resolve this issue?

    • Eeeeh… Afaik, normals have nothing to see with UVIsland? You can define uv islands with seams, so no need to split edges, so no influence on normals?

      • No, its not the UV islands that is the problem, is the mesh being split. It’s the equivalent of selecting a group of faces and using Split(Y key). This leaves a seam where the vertices have been split and their normals recalculated. Sorry for not being clearer.

      • Ok… well, if you really have to split your mesh, you can correct this with the SetSplitNormals modifier (though probably not in ideal ways yet, this tool needs more work).

        Later we may update tools that split a mesh in parts to keep current normals, if a cutom lnor data layer is present, but this is future dev.

        In fact, we can imagine many changes to existing tools, and many new tools, it’s just a matter of codding it (and for now, my efforts go to getting current basics reviewed & integrated 😉 ).

  4. Congratulations on this breakthrough, a long awaited game-development features for Blender.

    Can you please consider adding a custom tweaking feature to the SetSplitNormals data?
    For example, if you select a single vertex in Edit Mode and use the Rotate transformation on it, the rotation you perform would transform the custom normal data just for that single vertex.
    It would work in cooperation with your Split Normals addition as it is. Say, as a third mode called “Manual” alongside the already existing Ellipsoid and Object modes that you proposed, and it would allow for complete artistic control over the custom normal data.

    Regards.

    • Thanks! 🙂

      Yes, this is considered. However, those custom normals are per face corners (actually, user-wise, per ‘smooth fan’, i.e. a set of adjacent face corners sharing the same vert and linked by smooth edges).

      This makes it rather delicate to expose nicely in Edit mode, so still have to think about this a bit more – would consider this a second phase of the project, actually.

      • If I understand it correctly, is it possible to edit the custom normal data by using scripts, as in, command lines in the Python console manipulating the custom data? How exactly could this be done?
        For advanced users it should be useful.

Leave a comment